package com.moyu.user.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.moyu.user.domain.permission.Permission;
import com.moyu.user.domain.permission.dto.PermissionRoleDTO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @Author 赵彦博
 * @Date 2024/11/20 8:45
 */
@Mapper
public interface PermissionMapper extends BaseMapper<Permission> {

    /**
     * 通过ID查询单个权限
     *
     * @param id 权限ID
     * @return 单个权限
     */
    Permission selectById(Long id);

    /**
     * 查询所有权限
     *
     * @return 权限列表
     */
    List<Permission> list();

    /**
     * 通过用户名查询所有权限
     *
     * @param username 用户名
     * @return 权限列表
     */
    List<Permission> listByUsername(String username);

    /**
     * 通过角色ID查询所有权限
     *
     * @param roleId 角色ID
     * @return 权限列表
     */
    List<Permission> listByRoleId(Long roleId);

    /**
     * 通过权限实例查询所有权限
     *
     * @param permission 权限
     * @return 权限列表
     */
    List<Permission> listByEntity(Permission permission);

    /**
     * 通过类型查询所有权限和角色的映射
     *
     * @param type 类型
     * @return 权限和角色的映射集合
     */
    List<PermissionRoleDTO> listRoleByType(Permission.Type type);

    /**
     * 更新权限
     *
     * @param permission 权限实例
     * @return 影响行数
     */
    int update(Permission permission);

    /**
     * 删除权限
     *
     * @param id 权限ID
     * @return 影响行数
     */
    int delete(Long id);

}
